package com.kuqi.utils;

import android.util.Log;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

import java.util.ArrayList;
import java.util.List;

public class JsonUtil {

    private static Gson instance;

    //单例控制
    private JsonUtil(){}

    public static Gson getInstance()
    {
        if(instance == null){
            instance = new Gson();
        }

        return instance;
    }


    /**
     * 解释json数组为实体类列表
     * @param jsonStr json字符串
     * @param typeOfT XXX.class
     * @param <T> 需要转为的类型
     * @return 反馈转回来的结果
     */
    public static <T> List<T> parseJsonArrayToList(String jsonStr, java.lang.reflect.Type typeOfT){
        //Json的解析类对象
        JsonParser parser = new JsonParser();
        //将JSON的String 转成一个JsonArray对象
        Log.i("jsonstr", jsonStr);
        JsonArray jsonArray = parser.parse(jsonStr).getAsJsonArray();
        // 新建存储数据的列表
        List<T> resList = new ArrayList<>();
        // 循环填入数据
        for (JsonElement item : jsonArray) {
            T single = instance.fromJson(item, typeOfT);
            resList.add(single);
        }
        return resList;
    }

}
